package cn.z2huo.leetcode.problem.NO_0004;

/*
 * 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。 请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
你可以假设 nums1 和 nums2 均不为空。

示例 1: nums1 = [1, 3]
nums2 = [2] 中位数是 2.0

示例 2: nums1 = [1, 2]
nums2 = [3, 4]
中位数是 (2 + 3)/2 = 2.5
 */

import java.util.Arrays;
import java.util.Scanner;

@Deprecated
class Solution2 {

	//时间复杂度为O(m+n)
	public float getResult(int[] nums, int[] nums2) {
		float result = 0;
		int[] demo;
		
		demo = Arrays.copyOf(nums, nums.length+nums2.length);
		for(int j=nums.length,m=0; j<demo.length ; j++,m++ ) {
			demo[j] = nums2[m];
		}
		
		Arrays.sort(demo);
		if(demo.length%2 == 0) {
			result = (float) ((demo[demo.length/2-1]+demo[demo.length/2])/2.0);
		}else if(demo.length%2 != 0) {
			result = demo[demo.length/2];
		}
		
		return result;
	}
	
	public static void main(String[] args) {
		int[] nums;
		int[] nums2;
		
		int length = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数组的长度：");
		length = sc.nextInt();
		nums = new int[length];
		for(int i=0; i<length; i++) {
			System.out.printf("请输入第一个数组的第%d个数：",i+1);
			nums[i] = sc.nextInt();
		}
		
		System.out.println("请输入第二个数组的长度：");
		length = sc.nextInt();
		nums2 = new int[length];
		for(int j=0; j<length; j++) {
			System.out.printf("请输入第一个数组的第%d个数：",j+1);
			nums2[j] = sc.nextInt();
		}
		
		Solution2 s = new Solution2();
		System.out.println("这两个数组的中元素的中位数是："+s.getResult(nums, nums2));
		sc.close();
	}
}